1. Technical Field
Embodiments of the inventive subject matter generally relate to the field of computer software, and more particularly, to techniques for enabling multiple versions of a shared assembly to co-reside in a single UNIX™ process.
2. Background
In a UNIX environment, an application can use a shared assembly by linking against the assembly at compile time or by loading the shared assembly at runtime. When components in the application use different versions of the same shared assembly, a loader can identify symbols with the same name in different assembly versions and treat them differently depending on the shared assembly's location, name, and/or version number. In some instances, the application's dependency on different shared assembly versions may lead to incompatible symbol resolutions and cause errors. Thus, after a symbol is stored in the global symbol table, it becomes the process-wide reference for all other symbols with the same name.